JS 2017

Web Development - জাভাস্ক্রিপ্ট (JavaScript) জাভাস্ক্রিপ্ট আপডেট ভার্সন (JS Update Version) |
339
339

ECMAScript 2017 (ES8) হল জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ আপডেট যা ২০১৭ সালে প্রকাশিত হয়। ES8 পূর্ববর্তী সংস্করণগুলোর উপর ভিত্তি করে তৈরি এবং এতে কিছু নতুন বৈশিষ্ট্য এবং ফিচার যুক্ত করা হয়েছে, যা ডেভেলপারদের কোড লেখাকে আরও সহজ, কার্যকর এবং শক্তিশালী করে তোলে। ES8 এর মূল বৈশিষ্ট্যগুলির মধ্যে রয়েছে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং সহজ করা, অবজেক্ট ম্যানিপুলেশন উন্নত করা, এবং স্ট্রিং ম্যানিপুলেশনকে আরও কার্যকর করা।


ES8 এর প্রধান বৈশিষ্ট্যসমূহ

অ্যাসিঙ্ক/অ্যাওয়েট (Async/Await)

অ্যাসিঙ্ক/অ্যাওয়েট ES8 এ অ্যাসিঙ্ক্রোনাস কোড লেখার জন্য একটি সহজ এবং পাঠযোগ্য পদ্ধতি প্রদান করে। এটি প্রমিসেসের উপর ভিত্তি করে কাজ করে এবং কলব্যাক হজমের সমস্যা কমায়।

উদাহরণ:

// প্রমিস ব্যবহার করে
function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("Data fetched successfully!");
        }, 2000);
    });
}

fetchData()
    .then(data => console.log(data))
    .catch(error => console.error(error));

// Async/Await ব্যবহার করে
async function getData() {
    try {
        const data = await fetchData();
        console.log(data);  // আউটপুট: Data fetched successfully!
    } catch (error) {
        console.error(error);
    }
}

getData();

ব্যাখ্যা: async ফাংশনটি একটি প্রমিস রিটার্ন করে এবং await কিওয়ার্ডটি প্রমিসের সমাধান পর্যন্ত অপেক্ষা করে।


bject.entries() এবং Object.values()

Object.entries() এবং Object.values() মেথডগুলো অবজেক্ট থেকে কী-ভ্যালু পেয়ার এবং শুধুমাত্র ভ্যালুগুলোকে একটি অ্যারেতে রিটার্ন করে।

উদাহরণ:

const person = {
    name: "Alice",
    age: 25,
    city: "Dhaka"
};

// Object.entries()
const entries = Object.entries(person);
console.log(entries);
// আউটপুট: [["name", "Alice"], ["age", 25], ["city", "Dhaka"]]

// Object.values()
const values = Object.values(person);
console.log(values);
// আউটপুট: ["Alice", 25, "Dhaka"]

ব্যাখ্যা: Object.entries() কীগুলো এবং তাদের সংশ্লিষ্ট মানগুলোকে একটি অ্যারে হিসেবে প্রদান করে, যেখানে প্রতিটি উপাদান একটি [কী, মান] জোড়া। Object.values() শুধুমাত্র মানগুলোকে একটি অ্যারে হিসেবে প্রদান করে।


স্ট্রিং প্যাডিং (String Padding)

ES8 এ padStart() এবং padEnd() মেথডগুলো স্ট্রিংয়ের শুরু বা শেষে নির্দিষ্ট সংখ্যক ক্যারেক্টার যোগ করতে ব্যবহৃত হয়।

উদাহরণ:

const str = "5";

// padStart()
const paddedStart = str.padStart(3, '0');
console.log(paddedStart);  // আউটপুট: "005"

// padEnd()
const paddedEnd = str.padEnd(3, '0');
console.log(paddedEnd);    // আউটপুট: "500"

ব্যাখ্যা: padStart(3, '0') স্ট্রিংয়ের শুরুতে প্রয়োজনীয় সংখ্যা পর্যন্ত 0 যোগ করে স্ট্রিংকে দীর্ঘ করে তোলে। একইভাবে, padEnd(3, '0') স্ট্রিংয়ের শেষে 0 যোগ করে।


bject.getOwnPropertyDescriptors()

Object.getOwnPropertyDescriptors() মেথডটি একটি অবজেক্টের সকল প্রপার্টির ডেটা প্রোপার্টি ডেসক্রিপটরস (যেমন writable, enumerable, configurable) রিটার্ন করে।

উদাহরণ:

const person = {
    name: "Alice",
    age: 25
};

const descriptors = Object.getOwnPropertyDescriptors(person);
console.log(descriptors);
/*
আউটপুট:
{
    name: { value: 'Alice', writable: true, enumerable: true, configurable: true },
    age: { value: 25, writable: true, enumerable: true, configurable: true }
}
*/

ব্যাখ্যা: এই মেথডটি অবজেক্টের প্রপার্টিগুলোর গুণাবলী সম্পর্কে বিস্তারিত তথ্য প্রদান করে, যা অবজেক্ট ম্যানিপুলেশনে সহায়ক।


Promise.prototype.finally()

finally() মেথডটি একটি প্রমিসের শেষে কিছু কোড চালানোর জন্য ব্যবহৃত হয়, যা প্রমিস সফল বা ব্যর্থ হোক না কেন এক্সিকিউট হয়।

উদাহরণ:

function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            // resolve("Data fetched successfully!");
            reject("Error fetching data!");
        }, 2000);
    });
}

fetchData()
    .then(data => console.log(data))
    .catch(error => console.error(error))
    .finally(() => console.log("Operation completed."));
/*
আউটপুট:
Error fetching data!
Operation completed.
*/

ব্যাখ্যা: finally() ব্লকটি প্রমিসের শেষে কোনওভাবেই এক্সিকিউট হয়, তাই এটি রিসোর্স ক্লিনআপ বা অন্য কোন ক্রিয়াকলাপের জন্য ব্যবহার করা যেতে পারে।


ট্রেইলিং কমা (Trailing Comma)

ES8 এ ফাংশনের প্যারামিটার লিস্ট এবং কলগুলিতে ট্রেইলিং কমা ব্যবহার করার সুবিধা যুক্ত করা হয়েছে, যা কোডের সংস্করণ নিয়ন্ত্রণকে সহজ করে তোলে।

উদাহরণ:

function greet(
    name,
    age,
) {
    console.log(`Hello, ${name}. You are ${age} years old.`);
}

greet("Alice", 25,);
/*
আউটপুট:
Hello, Alice. You are 25 years old.
*/

ব্যাখ্যা: ট্রেইলিং কমা ব্যবহার করলে প্যারামিটার যুক্ত বা বাদ দেওয়া সহজ হয় এবং ডিফারেন্স রেগুলার এক্সপ্রেশন এড়ানো যায়।


ES8 এর অন্যান্য বৈশিষ্ট্যসমূহ

async এবং await এর উন্নতি

ES8 এ async এবং await এর সাহায্যে অ্যাসিঙ্ক্রোনাস কোড লেখা আরও সহজ এবং রিডেবল হয়েছে। এটি প্রমিসের সাথে কাজ করতে সুবিধা প্রদান করে এবং কলব্যাক হজমের সমস্যা কমায়।

উদাহরণ:

async function getData() {
    try {
        const response = await fetch('https://api.example.com/data');
        const data = await response.json();
        console.log(data);
    } catch (error) {
        console.error("Error:", error);
    }
}

getData();

ব্যাখ্যা: await কিওয়ার্ডটি প্রমিসের সমাধান পর্যন্ত অপেক্ষা করে এবং async ফাংশনটি একটি প্রমিস রিটার্ন করে।


Object.values()

Object.values() মেথডটি একটি অবজেক্টের সকল ভ্যালুগুলোকে একটি অ্যারে হিসেবে রিটার্ন করে।

উদাহরণ:

const person = {
    name: "Alice",
    age: 25,
    city: "Dhaka"
};

const values = Object.values(person);
console.log(values);  // আউটপুট: ["Alice", 25, "Dhaka"]

ব্যাখ্যা: Object.values() ব্যবহার করে অবজেক্টের শুধুমাত্র মানগুলোকে একটি অ্যারে হিসেবে পাওয়া যায়, যা ডেটা ম্যানিপুলেশনে সহায়ক।


ES8 এর সুবিধাসমূহ

  • অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং সহজ করা: async এবং await এর মাধ্যমে অ্যাসিঙ্ক্রোনাস কোড লেখা আরও সহজ এবং রিডেবল হয়।
  • অবজেক্ট ম্যানিপুলেশন উন্নত: Object.entries(), Object.values(), এবং Object.getOwnPropertyDescriptors() মেথডগুলো অবজেক্ট ম্যানিপুলেশনকে আরও কার্যকরী করে তোলে।
  • স্ট্রিং ম্যানিপুলেশন সহজ করা: padStart() এবং padEnd() মেথডগুলো স্ট্রিংয়ের শুরু বা শেষে নির্দিষ্ট সংখ্যক ক্যারেক্টার যোগ করা সহজ করে।
  • প্রমিস ম্যানেজমেন্ট উন্নত: Promise.prototype.finally() মেথডটি প্রমিসের শেষে কিছু কোড চালানো সহজ করে, যা কোডের রিডেবিলিটি এবং মেইনটেনেবিলিটি বাড়ায়।
  • কোডের রক্ষণাবেক্ষণ সহজ করা: ট্রেইলিং কমা ব্যবহার করে প্যারামিটার লিস্ট এবং কলগুলিকে আরও সহজে মেইনটেন করা যায়।

সারাংশ

ECMAScript 2017 (ES8) জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ আপডেট যা ডেভেলপারদের জন্য অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং, অবজেক্ট এবং স্ট্রিং ম্যানিপুলেশন, এবং প্রমিস ম্যানেজমেন্টের ক্ষেত্রে নতুন এবং উন্নত ফিচার প্রদান করে। async এবং await এর মাধ্যমে অ্যাসিঙ্ক্রোনাস কোড লেখা সহজ হয়েছে, Object.entries() এবং Object.values() অবজেক্ট ম্যানিপুলেশনকে আরও কার্যকর করেছে, এবং padStart()padEnd() স্ট্রিং ম্যানিপুলেশনকে আরও সহজ করেছে। এছাড়াও, Promise.prototype.finally() প্রমিসের শেষে নির্দিষ্ট কোড এক্সিকিউট করার সুযোগ দেয়, যা কোডের রিডেবিলিটি ও মেইনটেনেবিলিটি বাড়ায়। এই নতুন বৈশিষ্ট্যগুলো ডেভেলপারদের কোড লেখাকে আরও সংক্ষিপ্ত, পরিষ্কার এবং কার্যকরী করে তোলে, যা বড় এবং জটিল প্রজেক্টগুলিতে বিশেষভাবে উপকারী।


অতিরিক্ত টিপস

  • async এবং await অনুশীলন করুন: অ্যাসিঙ্ক্রোনাস কোড লেখার জন্য async এবং await এর ব্যবহার অনুশীলন করুন যাতে আপনি তাদের কার্যকারিতা ভালোভাবে বুঝতে পারেন।
  • অবজেক্ট মেথডগুলো ব্যবহার করুন: Object.entries(), Object.values(), এবং Object.getOwnPropertyDescriptors() মেথডগুলো ব্যবহার করে অবজেক্ট ম্যানিপুলেশন অনুশীলন করুন।
  • স্ট্রিং প্যাডিং ব্যবহার করুন: স্ট্রিং ম্যানিপুলেশনে padStart() এবং padEnd() মেথডগুলো ব্যবহার করে বিভিন্ন উদাহরণ তৈরি করুন।
  • প্রমিস মেথডগুলো শিখুন: Promise.prototype.finally() মেথড ব্যবহার করে প্রমিসের শেষে কিছু কোড এক্সিকিউট করার বিভিন্ন পরিস্থিতি অনুশীলন করুন।
  • ডকুমেন্টেশন পড়ুন: MDN Web Docs-এর মতো রিসোর্স থেকে ES8 এর নতুন বৈশিষ্ট্যগুলোর বিস্তারিত জানুন এবং বিভিন্ন ব্যবহারিক উদাহরণ অনুসরণ করুন।

ES8 এর নতুন বৈশিষ্ট্যগুলো শিখে এবং প্রয়োগ করে আপনি আপনার জাভাস্ক্রিপ্ট প্রোগ্রামিং দক্ষতাকে আরও উন্নত এবং কার্যকরী করতে পারবেন, যা আপনার কোডকে আরও নির্ভরযোগ্য এবং শক্তিশালী করে তুলবে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion